package 行为型模式.模板方法;

/**
 * @Description 抽象类，定义模板方法和基本方法
 * @Author shallow
 * @Date 2023/3/7 19:41
 */

public abstract class AbstractClass {
    //定义模板方法
    //父类已经定义好的算法结构，子类不可以改变算法的结构，所以加final关键字
    public final void cookProcess(){
        pourOil();
        heatOil();
        pourVegetable();
        pourSauce();
        fry();
    }
    //定义基本功能
    //倒油，热油，翻炒，属于基本的方法
    //倒蔬菜和加调味品是抽象方法
    //第一步，倒油
    public void pourOil() {
        System.out.println("倒油");
    }

    //第二步：热油是一样的，所以直接实现
    public void heatOil() {
        System.out.println("热油");
    }

    //第三步：倒蔬菜是不一样的（一个下包菜，一个是下菜心）
    public abstract void pourVegetable();

    //第四步：倒调味料是不一样
    public abstract void pourSauce();


    //第五步：翻炒是一样的，所以直接实现
    public void fry(){
        System.out.println("炒啊炒啊炒到熟啊");
    }

}
